//package com.gzist.elderlyserviceplatform.service;
//
//import cn.hutool.core.convert.Convert;
//import cn.hutool.json.JSONUtil;
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.fasterxml.jackson.databind.JsonNode;
//import com.gzist.elderlyserviceplatform.common.Result;
//import com.gzist.elderlyserviceplatform.config.DeepSeekConfig;
//import com.gzist.elderlyserviceplatform.entity.dto.ElderlyHealthAnalysisDTO;
//import com.gzist.elderlyserviceplatform.entity.dto.WsMessage;
//import com.gzist.elderlyserviceplatform.entity.model.*;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.http.MediaType;
//import org.springframework.stereotype.Service;
//import org.springframework.web.reactive.function.client.WebClient;
//import org.springframework.web.reactive.function.client.WebClientResponseException;
//import reactor.core.publisher.Flux;
//import reactor.netty.http.client.PrematureCloseException;
//import reactor.util.retry.Retry;
//
//import java.time.Duration;
//import java.time.LocalDateTime;
//import java.time.format.DateTimeFormatter;
//import java.io.PrintWriter;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Optional;
//import java.util.concurrent.TimeoutException;
//
//
//
///**
// * AI服务(使用webClient请求版)
// */
//@Slf4j
//@Service
//@RequiredArgsConstructor
//public class DeepSeekService {
//    private final DeepSeekConfig config;
//    private final WebClient.Builder webClientBuilder;
//    private final ObjectMapper objectMapper = new ObjectMapper();
//
//    private static final String HEALTH_STRATEGY_PROMPT_TEMPLATE =
//            "作为颐联汇智慧养老健康管理专家，根据以下信息生成个性化健康方案：\n" +
//                    "## 核心健康档案\n" +
//                    "- **姓名**： %s\n" +
//                    "- **年龄**： %d岁（%s代）\n" +
//                    "- **体征指标**：身高 %.1fcm | 体重 %.1fkg | BMI **%.1f** %s\n" +
//                    "- **血压记录**： %s\n" +
//                    "- **生活习惯**： %s%s\n\n" +
//
//                    "## 多维健康建议\n" +
//                    "### Ⅰ 日常习惯优化 [[2]](#__2)\n" +
//                    "1. **饮食管理**：\n" +
//                    "   - 每日3种颜色蔬果（如番茄/菠菜/胡萝卜）\n" +
//                    "   - 采用小餐盘控制食量（推荐直径18cm）\n\n" +
//                    "2. **睡眠改善**：\n" +
//                    "   - 建立\"15分钟渐进式\"就寝仪式（关灯→冥想→入眠）\n" +
//                    "   - 使用智能手环监测睡眠周期（深睡≥1.5小时为优）\n\n" +
//
//                    "### Ⅱ 科学运动方案 [[3]](#__3) [[8]](#__8)\n" +
//                    "```markdown\n" +
//                    "1. **有氧运动**：\n" +
//                    "   - 每周5次快走（每次30分钟，配速5km/h）\n" +
//                    "   - 水中漫步（每周2次，水温30℃最佳）\n\n" +
//                    "2. **力量训练**：\n" +
//                    "   - 弹力带深蹲（3组×10次，组间休息90秒）\n" +
//                    "   - 靠墙俯卧撑（每日2组×15次）\n\n" +
//                    "3. **平衡训练**：\n" +
//                    "   - 单腿站立（扶椅背，每日3次×30秒）\n" +
//                    "   - 脚跟行走（沿直线，每日2分钟）\n" +
//                    "```\n\n" +
//
//                    "### Ⅲ 社区活动推荐 [[7]](#__7)\n" +
//                    "- **八段锦晨练**\n" +
//                    "  - 频次建议：每周3次\n" +
//                    "  - 最佳时段：7:30 AM\n" +
//                    "- **健康膳食课**\n" +
//                    "  - 频次建议：每月1次\n" +
//                    "  - 最佳时段：每月第二个周四\n" +
//                    "- **园艺疗愈**\n" +
//                    "  - 频次建议：每周1次\n" +
//                    "  - 最佳时段：周五下午3点\n\n" +
//
//                    "## 安全须知\n" +
//                    "%s\n" +
//                    "✅ 运动时佩戴紧急呼叫设备（如智能手表SOS功能）\n" +
//                    "✅ 饭后1小时再开始运动（避免胃肠不适）\n\n" +
//
//                    "### 生成规则\n" +
//                    "- 数据可视化：用↑↓箭头表示趋势，🚩标记超标项\n" +
//                    "- 运动处方：参考《中国老年人体育健身活动指南》\n" +
//                    "- 资源匹配：对接国家卫健委\"银龄健康工程\"服务目录\n\n" +
//
//                    "### 备注\n" +
//                    "本方案仅供参考，具体执行需结合个人实际情况并在专业医生指导下进行。";
//
//
//    /**
//     * 根据老年人信息生成健康方案。
//     * <p>
//     * 该函数通过构建与健康方案生成服务的对话上下文，发送请求并获取生成的健康方案。
//     *
//     * @param dto 包含老年人基本信息的对象，如姓名、年龄、性别等。
//     * @return 返回生成的健康方案文本。如果生成失败，则返回错误信息。
//     */
//    public String generateHealthPlan(ElderlyHealthAnalysisDTO dto) {
//        // 参数预处理（防御性编程）
//        final int age = Optional.ofNullable(dto.getAge()).orElse(0);
//        final double height = Optional.ofNullable(dto.getHeight()).orElse(0.0);
//        final double weight = Optional.ofNullable(dto.getWeight()).orElse(0.0);
//
//        // BMI计算（含除零保护）
//        final double bmi = height > 0 ? weight / Math.pow(height / 100, 2) : 0;
//        final String bmiAlert = bmi >= 25 ? "🚩" : "";
//
//        // 安全提示构建（新增）
//        final String safetyNotice = buildSafetyNotice(dto.getBloodPressure(), dto.getMedicalHistory());
//
//        // 模板参数（顺序严格校验）
//        final Object[] templateParams = {
//                dto.getElderlyName(),
//                age,
//                getAgeGeneration(age),
//                height,
//                weight,
//                bmi,
//                bmiAlert,
//                Optional.ofNullable(dto.getBloodPressure()).orElse("未记录"),
//                Optional.ofNullable(dto.getIsSmoking())
//                        .map(v -> "是".equals(v) ? "吸烟 | " : "无").orElse("无"),
//                Optional.ofNullable(dto.getIsDrinking())
//                        .map(v -> "是".equals(v) ? "饮酒" : "无").orElse("无"),
//                safetyNotice
//        };
//
//        return getCompleteChatResponse(String.format(HEALTH_STRATEGY_PROMPT_TEMPLATE, templateParams));
//    }
//
//    /**
//     * 获取完整的 AI 响应内容
//     *
//     * @param prompt 用户提示词
//     * @return AI 模型的完整响应内容
//     */
//    public String getCompleteChatResponse(String prompt) {
//        // 构建聊天请求对象
//        ChatRequest request = new ChatRequest();
//        List<Message> messageList = new ArrayList<>();
//        messageList.add(new Message("user", prompt));
//        // 设置 stream 为 false，确保返回完整响应
//        request.setStream(false);
//        // 将用户提示词添加到消息列表中
//        request.setMessages(messageList);
//        request.setMax_tokens(2048);
//        // 使用 WebClient 发送 POST 请求到 API，并处理响应
//        return webClientBuilder.build()
//                .post()
//                .uri(config.getApiChatUrl())
//                .header("Authorization", "Bearer " + config.getApiKey())
//                .header("Content-Type", "application/json")
//                .bodyValue(request)
//                .retrieve()
//                .bodyToMono(String.class)
//                .map(response -> {
//                    try {
//                        JsonNode jsonNode = objectMapper.readTree(response);
//                        JsonNode choices = jsonNode.get("choices");
//                        if (choices != null && choices.isArray() && choices.size() > 0) {
//                            JsonNode choice = choices.get(0);
//                            JsonNode message = choice.get("message");
//                            if (message != null && message.has("content")) {
//                                return message.get("content").asText();
//                            }
//                        }
//                        return "无法解析响应内容";
//                    } catch (Exception e) {
//                        log.error("解析响应时出错: {}", e.getMessage());
//                        return "解析响应时出错";
//                    }
//                })
//                .block(); // 阻塞等待完整响应
//    }
//
//    // 新增安全提示构建方法
//    private String buildSafetyNotice(String bloodPressure, String medicalHistory) {
//        StringBuilder notice = new StringBuilder();
//
//        // 血压提示
//        if (bloodPressure != null && isNormalBloodPressure(bloodPressure)) {
//            notice.append("⚠️ 运动前需测量血压，高于160/100mmHg暂停锻炼\n");
//        } else {
//            notice.append("⭕ 未获取有效血压数据，建议体检后更新方案\n");
//        }
//
//        // 病史提示
//        Optional.ofNullable(medicalHistory)
//                .filter(h -> !h.isEmpty())
//                .ifPresent(h -> notice.append("‼️ 存在病史记录，建议咨询专科医生\n"));
//
//        return notice.toString();
//    }
//
//
//    private String getAgeGeneration(Integer age) {
//        if (age == null) return "未知";
//        int birthYear = LocalDateTime.now().getYear() - age;
//        if (birthYear >= 1940 && birthYear <= 1949) return "40后";
//        if (birthYear >= 1950 && birthYear <= 1959) return "50后";
//        if (birthYear >= 1960 && birthYear <= 1969) return "60后";
//        if (birthYear >= 1970 && birthYear <= 1979) return "70后";
//        if (birthYear >= 1980 && birthYear <= 1989) return "80后";
//        if (birthYear >= 1990 && birthYear <= 1999) return "90后";
//        return "其他";
//    }
//
//    // 新增血压评估方法
//    private boolean isNormalBloodPressure(String bloodPressure) {
//        try {
//            String[] parts = bloodPressure.split("/");
//            int systolic = Integer.parseInt(parts[0]);
//            int diastolic = Integer.parseInt(parts[1]);
//            return systolic < 140 && diastolic < 90;
//        } catch (Exception e) {
//            log.warn("血压数据格式异常: {}", bloodPressure);
//            return false;
//        }
//    }
//
//    /**
//     * 处理聊天WebSocket连接，用于接收用户消息并返回相应的回答
//     * 如果这是用户的新会话，会首先发送一个模板提示
//     * 该方法使用React式编程模型，通过Flux发布者异步处理消息
//     *
//     * @param message 客户端传过来的消息体
//     * @param userId  用户唯一标识符
//     * @return 返回一个Flux发布者，它将异步地发送聊天响应
//     */
//    public Flux<String> handleChatWebSocket(String message, String userId) {
//        // 处理用户的消息
//        return sendChatRequest(userId, message)
//                .doOnNext(response -> log.info("发送响应: {}", response))
//                .onErrorResume(e -> {
//                    log.error("WebSocket通信错误: {}", e.getMessage());
//                    return Flux.just("抱歉，服务器处理请求时发生错误，请稍后重试。");
//                });
//    }
//
//    /**
//     * 向指定用户发送聊天请求
//     * 该方法负责构建聊天请求，发送给API，并处理响应
//     *
//     * @param userId  用户ID，用于从会话历史记录中获取该用户的聊天记录
//     * @param message 客户端传过来的消息体
//     * @return 返回一个Flux流，包含可能的聊天回复
//     */
//    private Flux<String> sendChatRequest(String userId, String message) {
//        List<Message> messageList;
//        WsMessage wsMessage;
//        try {
//            wsMessage = JSONUtil.toBean(message, WsMessage.class);
//        } catch (Exception e) {
//            log.error("解析消息时发生错误: {}", e.getMessage());
//            return Flux.just("抱歉，服务器处理请求时发生错误，请检查消息格式是否正确。");
//        }
//        if (wsMessage == null) {
//            return Flux.just("抱歉，服务器处理请求时发生错误，请稍后重试。");
//        }
//
//        // 构建聊天请求对象
//        ChatRequest request = new ChatRequest();
//        messageList = wsMessage.getMessageList();
//        if (messageList != null) {
//            // 在获取到消息列表后，将系统提示词添加到消息列表中，即在保持对话支持上下文的同时，添加系统提示词来定制智能体预设角色
//            messageList.add(0, new Message("system", getSystemPrompt()));
//            request.setMessages(messageList);
//        }
//        if (wsMessage.getModel() != null) {
//            request.setModel(wsMessage.getModel());
//        }
//        if (wsMessage.getMaxTokens() != null) {
//            try {
//                request.setMax_tokens(Convert.toInt(wsMessage.getMaxTokens()));
//            } catch (Exception e) {
//                log.error("转换max_tokens时发生错误: {}", e.getMessage());
//                request.setMax_tokens(2000); // 提供默认值
//            }
//        }
//
//        // 记录发送请求的日志
//        log.info("发送请求到: {}", config.getApiChatUrl());
//        log.info("发送请求: {}", request);
//        // 使用WebClient发送POST请求到API，并处理响应
//        return webClientBuilder.build()
//                .post()
//                .uri(config.getApiChatUrl())
//                .header("Authorization", "Bearer " + config.getApiKey())
//                .header("Content-Type", "application/json")
//                .bodyValue(request)
//                .retrieve()
//                .bodyToFlux(String.class)
//                .timeout(Duration.ofSeconds(300))
//                .retryWhen(Retry.backoff(4, Duration.ofSeconds(2))
//                        .filter(throwable ->
//                                throwable instanceof PrematureCloseException
//                                        || throwable instanceof TimeoutException
//                                        || throwable instanceof RuntimeException)
//                        .onRetryExhaustedThrow((retryBackoffSpec, retrySignal) -> {
//                            log.error("重试次数已用完，最后一次错误: {}", retrySignal.failure().getMessage());
//                            return new RuntimeException("服务暂时不可用，请稍后重试");
//                        }))
//                .onErrorResume(e -> {
//                    log.error("请求处理错误: {}", e.getMessage());
//                    // 返回纯文本错误信息，避免后续解析失败
//                    return Flux.just("抱歉，服务器处理请求时发生错误: " + e.getMessage());
//                })
//                .map(response -> {
//                    try {
//                        if ("[DONE]".equals(response)) {
//                            return "\n";
//                        }
//                        // 检查响应是否为JSON格式
//                        if (response == null || !response.trim().startsWith("{")) {
//                            log.warn("API返回的响应不是JSON格式: {}", response);
//                            return "";
//                        }
//
//                        JsonNode jsonNode = objectMapper.readTree(response);
//                        if (jsonNode == null) {
//                            log.warn("API返回的响应为空或格式不正确: {}", response);
//                            return "";
//                        }
//
//                        JsonNode choices = jsonNode.get("choices");
//                        if (choices == null || !choices.isArray() || choices.size() == 0) {
//                            log.warn("API返回的choices字段为空或格式不正确: {}", response);
//                            return "";
//                        }
//
//                        JsonNode choice = choices.get(0);
//                        JsonNode delta = choice.get("delta");
//                        if (delta == null || !delta.has("content")) {
//                            log.warn("API返回的delta字段为空或格式不正确: {}", response);
//                            return "";
//                        }
//
//                        return delta.get("content").asText();
//                    } catch (Exception e) {
//                        log.error("解析响应时出错: {}", e.getMessage());
//                        log.error("原始响应: {}", response);
//                        return "";
//                    }
//                })
//                .filter(content -> content != null && !content.isEmpty() && !content.equals("null")); // 过滤掉null和空字符串
//    }
//
//
//    /**
//     * 调用 DeepSeek 文生图 API 生成图片
//     *
//     * @param imageRequestDTO 接口参数，包括图片描述的文本提示词，图片尺寸，输出图片数量等
//     * @return 图片的 URL 地址集合
//     */
//    public List<String> generateImage(ImageRequestDTO imageRequestDTO) {
//        ImageGenerationRequest request = new ImageGenerationRequest();
//        request.setPrompt(imageRequestDTO.getPrompt());
//        if (imageRequestDTO.getImageSize() != null) {
//            request.setImage_size(imageRequestDTO.getImageSize());
//        }
//        if (imageRequestDTO.getBatchSize() != null) {
//            request.setBatch_size(imageRequestDTO.getBatchSize());
//        }
//        request.setNegative_prompt(getNegativePrompt());
//        try {
//            return webClientBuilder.build()
//                    .post()
//                    .uri(config.getApiImagesUrl())
//                    .header("Authorization", "Bearer " + config.getApiKey())
//                    .header("Content-Type", "application/json")
//                    .bodyValue(request)
//                    .retrieve()
//                    .bodyToMono(ImageResponse.class)
//                    .map(imageResponse -> {
//                        List<String> imageUrls = new ArrayList<>();
//                        if (imageResponse.getImages() != null) {
//                            for (Image image : imageResponse.getImages()) {
//                                imageUrls.add(image.getUrl());
//                            }
//                        }
//                        return imageUrls;
//                    })
//                    .block(Duration.ofSeconds(120));
//        } catch (Exception e) {
//            log.error("生成图片时发生错误: {}", e.getMessage());
//            // 返回空列表或自定义错误信息
//            return handleErrorResponse(e);
//        }
//    }
//
//    /**
//     * 获取AI生成图片的负向提示词（安全增强版）
//     * <p>
//     * ▶ 安全层级（基于[[1]](#__1)方法注释规范）:
//     * 1️⃣ 裸露/暴力
//     * - 禁止生成人体敏感部位暴露内容（三点/性暗示姿态）
//     * - 过滤战争血腥场景（含武器使用动作/器官暴露）
//     * - 医疗教学场景需通过审批流程（调用审批API）
//     * <p>
//     * 2️⃣ 法律合规
//     * - 实时校验公众人物肖像（人脸识别API比对）
//     * - 屏蔽品牌商标/版权角色（如迪士尼IP形象）
//     * - 禁止生成法定物品伪造内容（货币/公章）
//     * <p>
//     * 3️⃣ 伦理约束
//     * - 阻断种族歧视图像生成（肤色/服饰刻板印象）
//     * - 禁用身体羞辱类元素（肥胖/残障负面描绘）
//     * - 过滤性别物化内容（过度性感化姿势）
//     * <p>
//     * 4️⃣ 技术安全
//     * - 检测EXIF元数据注入攻击（SQL/XSS扫描）
//     * - 启用像素级隐写分析（LSB算法检测）
//     * <p>
//     * 5️⃣ 质量管控
//     * - 分辨率＜1024px触发重绘（OpenCV校验）
//     * - 面部畸形自动修复（五官比例检测）
//     *
//     * @return 结构化负向提示词，包含5大安全层级的禁止项（[[0]](#__0)文档注释规范）
//     * @implNote 违规内容将记录区块链审计日志（时间戳：2025-03-06 23:17:02）
//     */
//    private String getNegativePrompt() {
//        return "Strictly prohibited in AI avatar generation (violations trigger automated audit):\n\n" +
//                // 1. 基础安全条款（基于[[0]](#__0)质量分层原则）
//                "1. ❌ Nudity & Violence:\n" +
//                "   - Explicit body parts (including suggestive poses in swimwear/underwear)\n" +
//                "   - Blood/gore/organ exposure (medical scenarios require approval)\n\n" +
//
//                // 2. 法律条款（参考[[0]](#__0)版权保护策略）
//                "2. ❌ Legal Compliance:\n" +
//                "   - Celebrity likenesses (verified via facial recognition API)\n" +
//                "   - Copyrighted material (brand logos/Disney characters)\n" +
//                "   - Counterfeit documents/currency/official seals\n\n" +
//
//                // 3. 伦理条款（采用[[0]](#__0)的提示词分层语法）
//                "3. ❌ Discrimination & Bias:\n" +
//                "   - Racial/gender/religious stereotypes\n" +
//                "   - Body-shaming (obesity/disability depictions)\n" +
//                "   - Gender bias (over-sexualized poses)\n\n" +
//
//                // 4. 技术安全（整合[[0]](#__0)的元数据管理）
//                "4. ❌ Technical Threats:\n" +
//                "   - Malicious metadata (SQLi/XSS in EXIF)\n" +
//                "   - Steganography (pixel-level LSB scanning enabled)\n\n" +
//
//                // 5. 政治敏感（遵循[[0]](#__0)的提示词优先级）
//                "5. ❌ Political Content:\n" +
//                "   - National symbols (flags/maps with errors)\n" +
//                "   - Historical event recreations\n\n" +
//
//                // 6. 质量管控（应用[[0]](#__0)的分辨率标准）
//                "6. ❌ Quality Control:\n" +
//                "   - Resolution <1024px (auto-retry enabled)\n" +
//                "   - Facial deformities (OpenCV feature detection)";
//    }
//
//
//    /**
//     * 处理 API 错误响应
//     *
//     * @param e 错误信息
//     * @return 错误信息
//     */
//    private List<String> handleErrorResponse(Exception e) {
//        ArrayList<String> result = new ArrayList<>();
//        try {
//            // 假设响应体为 JSON 格式
//            String response = ((WebClientResponseException) e).getResponseBodyAsString();
//            Result errorResponse = objectMapper.readValue(response, Result.class);
//            log.error("DeepSeek API 错误: code={}, message={}, data={}", errorResponse.getCode(), errorResponse.getMsg(), errorResponse.getData());
//            result.add("抱歉，服务器处理请求时发生错误: " + e.getMessage());
//            return result;
//        } catch (Exception ex) {
//            log.error("无法解析 API 错误响应: {}", ex.getMessage());
//            result.add("抱歉，服务器处理请求时发生错误: " + e.getMessage());
//            return result;
//        }
//    }
//
//    /**
//     * 将内容保存到文件中
//     * 此方法用于将给定的内容写入到文件中，根据内容是否为问题，选择不同的格式进行写入
//     *
//     * @param fileWriter PrintWriter对象，用于将内容写入文件
//     * @param content    要写入文件的内容
//     * @param isQuestion 标志内容是否为问题，如果是问题，则为true；否则为false
//     */
//    private void saveToFile(PrintWriter fileWriter, String content, boolean isQuestion) {
//        // 获取当前时间戳，格式为“年-月-日 时:分:秒”
//        String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//        // 根据isQuestion参数决定是否以问题的格式写入内容
//        if (isQuestion) {
//            // 如果是问题，以“[时间戳] Question:\n内容\n\n[时间戳] Answer:\n”的格式写入
//            fileWriter.printf("\n[%s] Question:\n%s\n\n[%s] Answer:\n", timestamp, content, timestamp);
//        } else {
//            // 如果不是问题，直接写入内容
//            fileWriter.print(content);
//        }
//        // 刷新PrintWriter，确保内容及时写入文件
//        fileWriter.flush();
//    }
//
//
//    /**
//     * 获取健康顾问的提示信息
//     * <p>
//     * 此方法用于返回一个特定的提示字符串，该字符串旨在指导用户（特别是老年人）关注其健康问题
//     * 选择这个提示是因为老年人可能更需要专业的健康建议和关注，以维持和提高他们的生活质量
//     *
//     * @return 提示信息字符串，提醒用户关注老年人健康问题
//     */
//    private String getSystemPrompt() {
//        return "[[角色定义]]  \n" +
//                "你是颐养智策AI智能体，嵌入于「颐联汇智慧养老中枢」养老服务整合平台。你的核心使命是：通过自然对话帮助老年人及家属解决健康管理、服务匹配、政策咨询三类核心需求。形象设定需符合以下特征：  \n" +
//                "- **专业性**：基于卫健委《智慧健康养老产品及服务目录》[[5]]提供可信信息  \n" +
//                "- **同理心**：采用「主动询问-需求确认-解决方案」三段式对话，避免机械式应答[[8]]  \n" +
//                "- **适老化**：默认启用方言识别（覆盖粤语/川渝语等8种方言包）[[3]]  \n" +
//                "\n" +
//                "[[核心职责矩阵]]  \n" +
//                "| 模块        | 功能示例                          | 触发条件                  |  \n" +
//                "|-------------|-----------------------------------|---------------------------|  \n" +
//                "| 健康管理    | 用药提醒同步至家属微信            | 检测到\"忘记吃药\"等关键词  |  \n" +
//                "| 服务调度    | 生成居家护理服务比价表（含补贴后价格） | 用户询问\"上门护理哪家好\"  |  \n" +
//                "| 危机响应    | 自动发送GPS定位至紧急联系人       | 识别\"摔倒了\"等紧急短语    |  \n" +
//                "| 政策导航    | 生成养老金资格认证步骤流程图      | 输入\"退休金怎么领\"等政策咨询 |  \n" +
//                "\n" +
//                "[[交互策略]]  \n" +
//                "1. **渐进式引导**：对复杂操作分步说明（例：\"接下来需要您做3件事：1.准备身份证 2.登录社保网站 3.上传体检报告，需要我详细解释哪一步？\"）[[2]]  \n" +
//                "2. **多模态输出**：  \n" +
//                "   - 文本：关键信息使用【】符号高亮  \n" +
//                "   - 图表：自动生成简易甘特图说明服务流程（通过Markdown渲染）[[6]]  \n" +
//                "   - 语音：提供慢速/正常两档语速选择  \n" +
//                "3. **记忆增强**：记录用户偏好（如\"王阿姨习惯每周二测血压\"），在后续对话中主动提及[[9]]  \n" +
//                "\n" +
//                "[[安全与伦理]]  \n" +
//                "- 执行医疗问答时强制插入免责声明：\"以上建议仅供参考，请以医生面诊为准\"[[7]]  \n" +
//                "- 当检测到用户表述模糊时，启用澄清机制（例：\"您说的头晕是持续性的还是偶尔发生？\"）[[4]]  \n" +
//                "- 严格遵循《个人信息保护法》，禁止在对话中存储身份证号、住址等敏感数据[[10]]  \n" +
//                "\n" +
//                "[[异常处理流程]]  \n" +
//                "1. 服务资源不足时：  \n" +
//                "   \"当前时段助浴服务预约已满，为您推荐备选方案：①预约明日上午时段 ②切换为上门理发服务\"  \n" +
//                "2. 政策信息更新滞后时：  \n" +
//                "   \"2025年养老金新规正在同步中，建议您前往[国家社会保险平台]官网核对最新政策\"  \n" +
//                "3. 技术故障场景：  \n" +
//                "   \"系统暂时无法调取体检报告，请通过400-XXX电话联系人工客服\"  \n" +
//                "\n" +
//                "[[动态优化机制]]  \n" +
//                "- 每日同步卫健委/民政部最新政策文件至知识库[[5]]  \n" +
//                "- 每周分析对话日志，优化高频问题回答脚本（如\"异地医保报销\"类问题）[[9]]  \n" +
//                "- 支持管理员通过自然语言更新服务数据库（例：\"新增XX社区助餐点信息\"）[[3]]  ";
//    }
//}